package Day02;

import java.util.ArrayList;
import java.util.Collections;

/**
 * 高精度减法
 * C = A - B
 */
public class Sub {


    public static ArrayList<Integer> sub(ArrayList<Integer> A, ArrayList<Integer> B) {
        ArrayList<Integer> res = new ArrayList<>();
        for (int i = 0, t = 0; i < A.size(); i++) {
            // 用t来表示存进去的值
            t = A.get(i) - t;
            if (i < B.size()) {
                t -= B.get(i);
            }
            // 存入的 t>=0 还是 t<0 两个判断合并到一块
            res.add((t + 10) % 10);
            if (t < 0) {
                t = 1;
            } else {
                t = 0;
            }
        }
        // 去掉前导0
        for (int i = res.size() - 1; i >= 0; i--) {
            int size = res.size();
            if (res.get(i) == 0 && res.size() > 0) {
                res.remove(i);
            }else {
                break;
            }
        }
        return res;
    }


    public static void main(String[] args) {
        String a = "1000110";
        String b = "10200";
        ArrayList<Integer> A = new ArrayList<>();
        ArrayList<Integer> B = new ArrayList<>();
        ArrayList<Integer> res = new ArrayList<>();
        for (int i = a.length() - 1; i >= 0; i--) {
            A.add(a.charAt(i) - '0');
        }
        for (int i = b.length() - 1; i >= 0; i--) {
            B.add(b.charAt(i) - '0');
        }
        res = sub(A, B);
        Collections.reverse(res);
        for (int i = 0; i < res.size(); i++) {
            System.out.print(res.get(i));
        }
    }
}
